package njust.csc.aeapi.config

import io.github.oshai.kotlinlogging.KotlinLogging
import org.springframework.context.annotation.Configuration
import org.springframework.web.servlet.config.annotation.CorsRegistry
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer
import java.io.File
import kotlin.io.path.Path
import kotlin.io.path.createDirectories
private val logger = KotlinLogging.logger {}

/**
 * @Author ZhouHang
 * @Date 24/6/10 周一
 */
@Configuration
class MVCConfig(private val applicationVariables: ApplicationVariables) : WebMvcConfigurer {

    /**
     * 添加静态资源目录
     * */
    override fun addResourceHandlers(registry: ResourceHandlerRegistry) {
        val resourceDir = Path(applicationVariables.userOutputDirPath)
        resourceDir.createDirectories()
        logger.info { "资源目录路径: ${resourceDir.toAbsolutePath()}" }
        registry
            .addResourceHandler(applicationVariables.reqPath)
            .addResourceLocations("file:" + resourceDir.toAbsolutePath() + File.separator)
    }

    /**
     * 全局统一配置跨域
     * */
    override fun addCorsMappings(registry: CorsRegistry) {
        registry
            .addMapping("/**")        // 允许跨域的路径
//            .allowedOrigins("*")        // 允许跨域请求的域名
            .allowedMethods("*")       // 允许跨域的方法
//            .allowCredentials(false)            // 是否允许证书
//            .allowedHeaders("token")   // 允许的 Header 属性
//            .maxAge(3600)                       // 跨域允许的时间
    }
}